home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 14.0 KB | 545 lines |
- 1000 REM ************* B A T T L E S H I P ********************
- 1010 REM PUBLIC DOMAIN SOFTWARE
- 1020 REM FILE NAME IS "BATSHIP.BAS"
- 1030 REM WRITTEN BY G.S. ALBERTS
- 1040 REM 33 WILDWOOD DRIVE, ESSEX JCT. VERMONT 05452 802-878-8941
- 1050 REM IBM BURLINGTON, VERMONT TIE LINE 446-3455 DEPT KO2 BLDG 965-2
- 1060 REM LAST REVISED 7-27-82
- 1070 REM MINIMUM CONFIGURATION BASICA, MONOCHROME DISPLAY, 64K MEMORY
- 1080 REM SET-UP AND OPERATION INCLUDED IN THE INSTRUCTIONS AS PART OF PROGRAM
- 1090 'REM THIS AREA FOR START UP OF THE PROGRAM
- 1100 DIM X(25),Y(25),S$(100,3),YY$(100,3),XX(100,3),YY(100,3)
- 1110 DIM XED(500),YED(500)
- 1120 DIM A(500),B(500)
- 1130 CLS:KEY OFF
- 1140 LOCATE 10,30:PRINT "B A T T L E S H I P"
- 1150 LOCATE 12,30:PRINT "BY G.S. ALBERTS"
- 1160 REM GENERATE RANDOM NUMBER SEED FROM THE TIME$ FUNCTION
- 1170 H=1+VAL(LEFT$(TIME$,2)):M=1+VAL(MID$(TIME$,4,2)):S=1+VAL(RIGHT$(TIME$,2))
- 1180 IF H>16 THEN H=H-12
- 1190 IF H>8 THEN H=8-H
- 1200 N=H*M*S:RANDOMIZE(N)
- 1210 LOCATE 24,30:INPUT "DO YOU NEED INSTRUCTION? (Y/N)";ANS$
- 1220 IF LEFT$(ANS$,1)="Y" THEN GOTO 1250
- 1230 IF LEFT$(ANS$,1)="y" THEN GOTO 1250
- 1240 GOTO 1510
- 1250 REM THIS IS THE INSTRUCTION SECTION
- 1260 CLS:PRINT "THE COMPUTER WILL HIDE SIX SHIPS ON A 10 X 10 GRID. THE SHIPS CAN NOT "
- 1270 PRINT "TOUCH EACH OTHER OR OVERLAP. IT WILL BE YOUR JOB, USING SALVOS OF THREE "
- 1280 PRINT "SHOTS EACH TURN, TO SINK ALL OF THE SHIPS IN THE MINIMUM NUMBER OF TURNS."
- 1290 PRINT :PRINT "YOU WILL BE ASKED TO INPUT YOUR SHOTS USING THE CO-ORDINATE SYSTEM"
- 1300 PRINT "SHOWN ON THE PLAYING BOARD i.e. A1, OR B3, OR H9, etc."
- 1310 PRINT
- 1320 PRINT "YOU HAVE TO PUT A SHELL INTO EACH GRID SQUARE CONTAINING A PART OF THE SHIP"
- 1330 PRINT "TO SINK THAT SHIP. THEREFORE IT TAKES 7 HITS TO SINK THE AIRCRAFT CARRIER"
- 1340 PRINT "5 TO SINK THE BATTLESHIP, 4 TO SINK THE CRUISER, ETC."
- 1350 PRINT:PRINT
- 1360 PRINT "THE COMPUTER WILL RECORD YOUR SHOTS ON THE PLAYING BOARD BY THE TURN"
- 1370 PRINT "NUMBER OF THAT SHOT. AFTER THE THREE SHOTS OF THE SALVO IT WILL ALSO"
- 1380 PRINT "PRINT ANY HITS ON THE SHIP SCORECARD TO THE RIGHT OF THE BOARD - AGAIN"
- 1390 PRINT "USING THE TURN NUMBER WHEN THAT SHIP WAS HIT."
- 1400 PRINT:PRINT "HOWEVER THE PLACE WHERE THE SHOT IS RECORDED ON THE SCORECARD"
- 1410 PRINT "WILL NOT NECESSARILY BE THE PART OF THE SHIP HIT. IS IS USED ONLY"
- 1420 PRINT "TO GIVE YOU A RECORD OF WHICH SHIPS YOU HIT ON WHICH TURNS."
- 1430 PRINT:PRINT
- 1440 INPUT "DO YOU WANT TO SEE THE PLAYING BOARD AND SHIPS USED BEFORE STARTING";ANS$
- 1450 IF LEFT$(ANS$,1)="N" THEN GOTO 1510
- 1460 IF LEFT$(ANS$,1)="n" THEN GOTO 1510
- 1470 REM THIS SECTION JUST SHOWS THE BOARD AND SHIPS WITHOUT HIDING THEM
- 1480 GOSUB 1700
- 1490 LOCATE 24,1 :INPUT "PRESS ENTER TO CONTINUE";X$
- 1500 GOTO 1510
- 1510 REM THIS IS THE START OF THE GAME SECTION-INCLUDING THE HIDING OF SHIPS
- 1520 CLS
- 1530 LOCATE 10,30:INPUT "ARE YOU READY TO GO";ANS$
- 1540 IF LEFT$(ANS$,1)="N" THEN CHAIN "MENU",1000
- 1550 IF LEFT$(ANS$,1)="n" THEN CHAIN "MENU",1000
- 1560 GOSUB 6400 REM PLAY CHARGE
- 1570 GOSUB 1700 REM SET UP GAME BOARD
- 1580 GOSUB 2850 REM HIDE THE SHIPS
- 1590 TURN=1
- 1600 GOSUB 5360 REM INPUT THE SHOTS FOR THIS TURN
- 1610 IF HAC+HB+HC+HD+HS+HPT=22 THEN GOTO 1650 REM IF ALL SHIPS SUNK THEN CHAIN "MENU",1000
- 1620 TURN=TURN+1
- 1630 GOSUB 5360 REM INPUT SHOTS FOR TURN + 1
- 1640 GOTO 1610 REM CHECK TO SEE IF ALL SHIPS SUNK
- 1650 GOSUB 6400 REM PLAY CHARGE
- 1660 COLOR 0,7:LOCATE 23,1:PRINT "OK---------SO YOU FINALLY DID IT IN ";TURN;"SHOTS "
- 1670 GOSUB 6420 REM PLAY TAPS
- 1680 COLOR 7,0
- 1690 CHAIN "MENU",1000
- 1700 CLS 'THIS IS THE SUBROUTINE FOR SETTING UP THE GAME BOARD
- 1710 FOR J=2 TO 22 STEP 2
- 1720 FOR I=1 TO 52
- 1730 LOCATE J,I
- 1740 PRINT CHR$(220);
- 1750 NEXT I
- 1760 NEXT J
- 1770 FOR J=1 TO 22
- 1780 FOR I=3 TO 53 STEP 5
- 1790 LOCATE J,I
- 1800 PRINT CHR$(219);
- 1810 NEXT I
- 1820 NEXT J
- 1830 I=0
- 1840 FOR J=4 TO 49 STEP 5
- 1850 LOCATE 1,J
- 1860 PRINT I;
- 1870 I=I+1
- 1880 NEXT J
- 1890 LOCATE 3,1
- 1900 PRINT "A"
- 1910 LOCATE 5,1:PRINT "B"
- 1920 LOCATE 7,1:PRINT "C"
- 1930 LOCATE 9,1:PRINT "D"
- 1940 LOCATE 11,1:PRINT "E"
- 1950 LOCATE 13,1:PRINT "F"
- 1960 LOCATE 15,1:PRINT "G"
- 1970 LOCATE 17,1:PRINT "H"
- 1980 LOCATE 19,1:PRINT "I"
- 1990 LOCATE 21,1:PRINT "J"
- 2000 FOR J=55 TO 80
- 2010 FOR I= 3 TO 5 STEP 2
- 2020 LOCATE I,J
- 2030 PRINT CHR$(220)
- 2040 NEXT I
- 2050 NEXT J
- 2060 FOR J=55 TO 60
- 2070 FOR I=1 TO 7 STEP 2
- 2080 LOCATE I,J
- 2090 PRINT CHR$(220)
- 2100 NEXT I
- 2110 NEXT J
- 2120 FOR I=55 TO 60 STEP 5
- 2130 FOR J=2 TO 7
- 2140 LOCATE J,I
- 2150 PRINT CHR$(219);
- 2160 NEXT J
- 2170 NEXT I
- 2180 FOR I=65 TO 80 STEP 5
- 2190 FOR J=4 TO 5
- 2200 LOCATE J,I
- 2210 PRINT CHR$(219);
- 2220 NEXT J
- 2230 NEXT I
- 2240 LOCATE 2,63:PRINT "AIRCRAFT CARRIER"
- 2250 FOR I=55 TO 80
- 2260 FOR J=9 TO 11 STEP 2
- 2270 LOCATE J,I
- 2280 PRINT CHR$(220)
- 2290 NEXT J
- 2300 NEXT I
- 2310 FOR J=55 TO 80 STEP 5
- 2320 FOR I=10 TO 11
- 2330 LOCATE I,J
- 2340 PRINT CHR$(219)
- 2350 NEXT I
- 2360 NEXT J
- 2370 LOCATE 8,66:PRINT "BATTLESHIP"
- 2380 FOR J=55 TO 75
- 2390 FOR I=13 TO 15 STEP 2
- 2400 LOCATE I,J
- 2410 PRINT CHR$(220)
- 2420 NEXT I
- 2430 NEXT J
- 2440 FOR I=14 TO 15
- 2450 FOR J=55 TO 75 STEP 5
- 2460 LOCATE I,J
- 2470 PRINT CHR$(219)
- 2480 NEXT J
- 2490 NEXT I
- 2500 LOCATE 12,60:PRINT "CRUISER"
- 2510 FOR J=55 TO 70
- 2520 FOR I=17 TO 19 STEP 2
- 2530 LOCATE I,J
- 2540 PRINT CHR$(220)
- 2550 NEXT I
- 2560 NEXT J
- 2570 LOCATE 16,55:PRINT "DESTROYER"
- 2580 FOR J=55 TO 70 STEP 5
- 2590 FOR I=18 TO 19
- 2600 LOCATE I,J
- 2610 PRINT CHR$(219);
- 2620 NEXT I
- 2630 NEXT J
- 2640 LOCATE 20,57:PRINT "SUB";
- 2650 FOR I=21 TO 23 STEP 2
- 2660 FOR J=55 TO 65
- 2670 LOCATE I,J
- 2680 PRINT CHR$(220);
- 2690 NEXT J
- 2700 NEXT I
- 2710 LOCATE 20,72 :PRINT "P.T.";
- 2720 FOR J=70 TO 75
- 2730 FOR I=21 TO 23 STEP 2
- 2740 LOCATE I,J
- 2750 PRINT CHR$(220);
- 2760 NEXT I
- 2770 NEXT J
- 2780 FOR J=22 TO 23
- 2790 FOR I=55 TO 75 STEP 5
- 2800 LOCATE J,I
- 2810 PRINT CHR$(219);
- 2820 NEXT I
- 2830 NEXT J
- 2840 RETURN
- 2850 REM THIS IS THE SECTION FOR HIDING THE SHIPS
- 2860 REM THIS IS THE SECTION FOR HIDING THE AIRCRAFT CARRIER
- 2870 COLOR 28,0
- 2880 LOCATE 23,1
- 2890 PRINT "THE SYSTEM IS WORKING ON THE AIRCRAFT CARRIER."
- 2900 COLOR 7,0
- 2910 X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND):E=INT(2*RND)+1
- 2920 REM CHOOSE RANDOM NUMBERS FOR START OF SHIP, DIRECTION OF SHIP AND WHICH END OF THE AIRCRAFT CARRIER HAS THE CROSS
- 2930 IF Y<4 AND Z=0 THEN GOTO 2910
- 2940 IF X>5 AND Z=1 THEN GOTO 2910
- 2950 IF Y>5 AND Z=2 THEN GOTO 2910
- 2960 IF X<4 AND Z=3 THEN GOTO 2910
- 2970 IF Z=0 AND X=0 THEN GOTO 2910
- 2980 IF Z=0 AND X=9 THEN GOTO 2910
- 2990 IF Z=1 AND Y=0 THEN GOTO 2910
- 3000 IF Z=1 AND Y=9 THEN GOTO 2910
- 3010 IF Z=2 AND X=0 THEN GOTO 2910
- 3020 IF Z=2 AND X=9 THEN GOTO 2910
- 3030 IF Z=3 AND Y=0 THEN GOTO 2910
- 3040 IF Z=3 AND Y=9 THEN GOTO 2910
- 3050 ON Z GOTO 3130,3200,3270
- 3060 REM PLACE THE AC IN POSSIBLE DIRECTION 0 (N)
- 3070 Y(1)=Y:Y(2)=Y-1:Y(3)=Y-2:Y(4)=Y-3:Y(5)=Y-4
- 3080 FOR I=1 TO 5:X(I)=X:NEXT I
- 3090 X(6)=X+1:X(7)=X-1
- 3100 IF E=1 THEN Y(6)=Y:Y(7)=Y
- 3110 IF E=2 THEN Y(6)=Y(5):Y(7)=Y(5)
- 3120 GOTO 3340
- 3130 REM PLACE THE AC IN POSSIBLE DIRECTION 1 (E)
- 3140 X(1)=X:X(2)=X+1:X(3)=X+2:X(4)=X+3:X(5)=X+4
- 3150 FOR I=1 TO 5:Y(I)=Y:NEXT I
- 3160 Y(6)=Y+1:Y(7)=Y-1
- 3170 IF E=1 THEN X(6)=X:X(7)=X
- 3180 IF E=2 THEN X(6)=X(5):X(7)=X(5)
- 3190 GOTO 3340
- 3200 REM PLACE THE AC IN POSSIBLE DIRECTION 2 (S)
- 3210 Y(1)=Y:Y(2)=Y+1:Y(3)=Y+2:Y(4)=Y+3:Y(5)=Y+4
- 3220 FOR I=1 TO 5 :X(I)=X: NEXT I
- 3230 X(6)=X+1:X(7)=X-1
- 3240 IF E=2 THEN Y(6)=Y(5):Y(7)=Y(5)
- 3250 IF E=1 THEN Y(6)=Y:Y(7)=Y
- 3260 GOTO 3340
- 3270 REM PLACE AC IN POSSIBLE DIRECTION 3 (W)
- 3280 X(1)=X:X(2)=X-1:X(3)=X-2:X(4)=X-3:X(5)=X-4
- 3290 FOR I=1 TO 5:Y(I)=Y:NEXT I
- 3300 Y(6)=Y+1:Y(7)=Y-1
- 3310 IF E=1 THEN X(6)=X:X(7)=X
- 3320 IF E=2 THEN X(6)=X(5):X(7)=X(5)
- 3330 GOTO 3340
- 3340 REM
- 3350 ZZZ=7
- 3360 GOSUB 5090
- 3370 REM PLACE THE BATTLESHIP
- 3380 COLOR 28,0:LOCATE 23,1
- 3390 PRINT "NOW IT IS THE BATTLESHIP WE ARE WORKING ON. ";
- 3400 COLOR 7,0
- 3410 X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
- 3420 REM CHOOSE RANDOM NUMBERS FOR END AND DIRECTION OF THE BATTLESHIP
- 3430 FLIP=0
- 3440 IF Z=0 AND Y<4 THEN GOTO 3410
- 3450 IF Z=1 AND X>5 THEN GOTO 3410
- 3460 IF Z=2 AND Y>5 THEN GOTO 3410
- 3470 IF Z=3 AND X<4 THEN GOTO 3410
- 3480 ON Z GOTO 3560,3620,3680
- 3490 REM HIDE THE BATTLESHIP IN THE 0 (N) DIRECTION
- 3500 FOR I=8 TO 12
- 3510 X(I)=X
- 3520 NEXT I
- 3530 Y(8)=Y:Y(9)=Y-1:Y(10)=Y-2:Y(11)=Y-3:Y(12)=Y-4
- 3540 GOTO 3720
- 3550 REM HIDE THE BATTLESHIP IN THE 1 (E) DIRECTION
- 3560 FOR I=8 TO 12
- 3570 Y(I)=Y
- 3580 NEXT I
- 3590 X(8)=X:X(9)=X+1:X(10)=X+2:X(11)=X+3:X(12)=X+4
- 3600 GOTO 3720
- 3610 REM HIDE THE BATTLESHIP IN THE 2 (S) DIRECTION
- 3620 FOR I=8 TO 12
- 3630 X(I)=X
- 3640 NEXT I
- 3650 Y(8)=Y:Y(9)=Y+1:Y(10)=Y+2:Y(11)=Y+3:Y(12)=Y+4
- 3660 GOTO 3720
- 3670 REM HIDE THE BATTLESHIP IN THE 3 (W) DIRECTION
- 3680 FOR I=8 TO 12
- 3690 Y(I)=Y
- 3700 NEXT I
- 3710 X(8)=X:X(9)=X-1:X(10)=X-2:X(11)=X-3:X(12)=X-4
- 3720 REM CHECK PLACING OF BATTLESHIP FOR CONTACT/OVERLAP
- 3730 ZZZZ=5
- 3740 GOSUB 5290
- 3750 IF FLIP=1 THEN GOTO 3410
- 3760 ZZZ=ZZZ+ZZZZ
- 3770 GOSUB 5090
- 3780 REM HIDE THE CRUISER
- 3790 COLOR 28,0
- 3800 LOCATE 23,1
- 3810 PRINT "WE ARE GETTING CLOSE---ITS CRUISER TIME! "
- 3820 COLOR 7,0
- 3830 X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
- 3840 FLIP=0
- 3850 IF Z=0 AND Y<3 THEN GOTO 3830
- 3860 IF Z=1 AND X>6 THEN GOTO 3830
- 3870 IF Z=2 AND Y>6 THEN GOTO 3830
- 3880 IF Z=3 AND X<3 THEN GOTO 3830
- 3890 ON Z GOTO 3960,4020,4080
- 3900 REM PLACE CRUISER IN 0 DIRECTION (N)
- 3910 FOR I=13 TO 16
- 3920 X(I)=X
- 3930 NEXT I
- 3940 Y(13)=Y:Y(14)=Y-1:Y(15)=Y-2:Y(16)=Y-3
- 3950 GOTO 4140
- 3960 REM PLACE CRUSIER IN 1 DIRECTION (E)
- 3970 FOR I=13 TO 16
- 3980 Y(I)=Y
- 3990 NEXT I
- 4000 X(13)=X:X(14)=X+1:X(15)=X+2:X(16)=X+3
- 4010 GOTO 4140
- 4020 REM PLACE CRUISER IN 2 DIRECTION (S)
- 4030 FOR I=13 TO 16
- 4040 X(I)=X
- 4050 NEXT I
- 4060 Y(13)=Y:Y(14)=Y+1:Y(15)=Y+2:Y(16)=Y+3
- 4070 GOTO 4140
- 4080 REM PLACE CRUSIER IN 3 DIRECTION (W)
- 4090 FOR I=13 TO 16
- 4100 Y(I)=Y
- 4110 NEXT I
- 4120 X(13)=X:X(14)=X-1:X(15)=X-2:X(16)=X-3
- 4130 GOTO 4140
- 4140 REM CHECK CRUISER FOR OVERLAP
- 4150 ZZZZ=4
- 4160 GOSUB 5290
- 4170 IF FLIP=1 THEN GOTO 3830
- 4180 ZZZ=ZZZ+ZZZZ
- 4190 GOSUB 5090
- 4200 REM HIDE THE DESTROYER
- 4210 COLOR 28,0
- 4220 LOCATE 23,1
- 4230 PRINT "D E S T R O Y E R T I M E "
- 4240 COLOR 7,0
- 4250 X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
- 4260 FLIP=0
- 4270 IF Z=0 AND Y<2 THEN GOTO 4250
- 4280 IF Z=1 AND X>7 THEN GOTO 4250
- 4290 IF Z=2 AND Y>7 THEN GOTO 4250
- 4300 IF Z=3 AND X<2 THEN GOTO 4250
- 4310 ON Z GOTO 4380,4440,4500
- 4320 REM PLACE DESTROYER IN 0 (N) DIRECTION
- 4330 FOR I=17 TO 19
- 4340 X(I)=X
- 4350 NEXT I
- 4360 Y(17)=Y:Y(18)=Y-1:Y(19)=Y-2
- 4370 GOTO 4550
- 4380 REM PLACE DESTROYER IN 1 (E) DIRECTION
- 4390 FOR I=17 TO 19
- 4400 Y(I)=Y
- 4410 NEXT I
- 4420 X(17)=X:X(18)=X+1:X(19)=X+2
- 4430 GOTO 4550
- 4440 REM PLACE DESTROYER IN 2 (S) DIRECTION
- 4450 FOR I=17 TO 19
- 4460 X(I)=X
- 4470 NEXT I
- 4480 Y(17)=Y:Y(18)=Y+1:Y(19)=Y+2
- 4490 GOTO 4550
- 4500 REM PLACE DESTROYER IN 3 (W) DIRECTION
- 4510 FOR I=17 TO 19
- 4520 Y(I)=Y
- 4530 NEXT I
- 4540 X(17)=X:X(18)=X-1:X(19)=X-2
- 4550 REM CHECK DESTROYER FOR OVERLAP
- 4560 ZZZZ=3
- 4570 GOSUB 5290
- 4580 IF FLIP=1 THEN GOTO 4250
- 4590 ZZZ=ZZZ+ZZZZ
- 4600 GOSUB 5090
- 4610 REM PLACE THE SUB
- 4620 COLOR 28,0
- 4630 LOCATE 23,1
- 4640 PRINT "NEXT TO THE LAST ONE NOW -- SUB TIME.... "
- 4650 COLOR 7,0
- 4660 X=INT(10*RND):Y=INT(10*RND):Z=INT(4*RND)
- 4670 FLIP=0
- 4680 IF Z=0 AND Y<1 THEN GOTO 4660
- 4690 IF Z=1 AND X>8 THEN GOTO 4660
- 4700 IF Z=2 AND Y>8 THEN GOTO 4660
- 4710 IF Z=3 AND X<1 THEN GOTO 4660
- 4720 ON Z GOTO 4770,4810,4850
- 4730 REM PLACE SUB IN THE 0 DIRECTION (N)
- 4740 X(20)=X:X(21)=X
- 4750 Y(20)=Y:Y(21)=Y-1
- 4760 GOTO 4880
- 4770 REM PLACE SUB IN THE 1 DIRECTION (E)
- 4780 Y(20)=Y:Y(21)=Y
- 4790 X(20)=X:X(21)=X+1
- 4800 GOTO 4880
- 4810 REM PLACE SUB IN THE 2 DIRECTION (S)
- 4820 Y(20)=Y:Y(21)=Y+1
- 4830 X(20)=X:X(21)=X
- 4840 GOTO 4880
- 4850 REM PLACE SUB IN THE 3 DIRECTION (W)
- 4860 Y(20)=Y:Y(21)=Y
- 4870 X(20)=X:X(21)=X-1
- 4880 REM CHECK SUB FOR OVERLAP
- 4890 ZZZZ=2
- 4900 GOSUB 5290
- 4910 IF FLIP=1 THEN GOTO 4660
- 4920 ZZZ=ZZZ+ZZZZ
- 4930 GOSUB 5090
- 4940 REM PLACE THE PT BOAT=AND EASY JOB
- 4950 COLOR 28,0
- 4960 LOCATE 23,1
- 4970 PRINT "NOW THE LAST AND EASIEST -- THE P.T BOAT"
- 4980 COLOR 7,0
- 4990 X(22)=INT(10*RND):Y(22)=INT(10*RND)
- 5000 ZZZZ=1
- 5010 FLIP=0
- 5020 GOSUB 5290
- 5030 IF FLIP=1 THEN GOTO 4990
- 5040 ZZZ=ZZZ+ZZZZ
- 5050 GOSUB 5090
- 5060 LOCATE 23,1
- 5070 PRINT " "
- 5080 RETURN
- 5090 REM GENERATE XED OR YED OUT SQUARES WHERE NO SHIP CAN BE PLACED
- 5100 FOR I=1 TO ZZZ
- 5110 J=(((I-1)*9)+1)
- 5120 XED(J)=X(I):YED(J)=Y(I)+1
- 5130 XED(J+1)=X(I):YED(J+1)=Y(I)-1
- 5140 XED(J+2)=X(I)-1:YED(J+2)=Y(I)
- 5150 XED(J+3)=X(I)+1:YED(J+3)=Y(I)
- 5160 XED(J+4)=X(I)+1:YED(J+4)=Y(I)+1
- 5170 XED(J+5)=X(I)-1:YED(J+5)=Y(I)-1
- 5180 XED(J+6)=X(I)+1:YED(J+6)=Y(I)-1
- 5190 XED(J+7)=X(I)-1:YED(J+7)=Y(I)+1
- 5200 XED(J+8)=X(I):YED(J+8)=Y(I)
- 5210 NEXT I
- 5220 REM DELETE REM FROM THE NEXT 5 LINES FOR DEBUG - CHECK THE PLACEMENT OF THE SHIPS IS CORRECTLY DONE WITHOUT TOUCHING OR OVERLAP
- 5230 REM FOR I=1 TO 9*ZZZ
- 5240 REM A(I)=((YED(I)*2)+3):B(I)=((XED(I)*5)+6)
- 5250 REM LOCATE A(I),B(I)
- 5260 REM PRINT "X"
- 5270 REM NEXT
- 5280 RETURN
- 5290 REM CHECK FOR OVERLAP OR TOUCHING OF SHIPS
- 5300 FOR I=1 TO 9*ZZZ
- 5310 FOR J=ZZZ+1 TO ZZZZ+ZZZ
- 5320 IF X(J)=XED(I) AND Y(J)=YED(I) THEN FLIP=1
- 5330 NEXT J
- 5340 NEXT I
- 5350 RETURN
- 5360 REM THIS IS THE INPUT THE SHOTS PER TURN AREA
- 5370 FOR J=1 TO 3
- 5380 LOCATE 23,1
- 5390 PRINT " ";
- 5400 LOCATE 23,1
- 5410 PRINT " ";CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);
- 5420 PRINT CHR$(0);CHR$(0);CHR$(0);CHR$(0);CHR$(0);CHR$(220);CHR$(220);CHR$(220);CHR$(220);CHR$(220);:LOCATE 23,55:PRINT CHR$(219):LOCATE 23,60:PRINT CHR$(219):LOCATE 23,65:PRINT CHR$(219):LOCATE 23,70:PRINT CHR$(219):LOCATE 23,75:PRINT CHR$(219);
- 5430 LOCATE 23,1:PRINT "SHOT #";J;" FOR TURN #";TURN;"-FORMAT C8 OR G2 ETC.";:INPUT S$(TURN,J)
- 5440 PRINT " ";
- 5450 IF LEN(S$(TURN,J))<>2 THEN LOCATE 24,1:PRINT "ILLEGAL INPUT";:GOTO 5380
- 5460 YY$(TURN,J)=LEFT$(S$(TURN,J),1)
- 5470 IF YY$(TURN,J)="A" THEN YY(TURN,J)=0:GOTO 5700
- 5480 IF YY$(TURN,J)="a" THEN YY(TURN,J)=0:GOTO 5700
- 5490 IF YY$(TURN,J)="B" THEN YY(TURN,J)=1:GOTO 5700
- 5500 IF YY$(TURN,J)="b" THEN YY(TURN,J)=1:GOTO 5700
- 5510 IF YY$(TURN,J)="C" THEN YY(TURN,J)=2:GOTO 5700
- 5520 IF YY$(TURN,J)="c" THEN YY(TURN,J)=2:GOTO 5700
- 5530 IF YY$(TURN,J)="D" THEN YY(TURN,J)=3:GOTO 5700
- 5540 IF YY$(TURN,J)="d" THEN YY(TURN,J)=3:GOTO 5700
- 5550 IF YY$(TURN,J)="E" THEN YY(TURN,J)=4:GOTO 5700
- 5560 IF YY$(TURN,J)="e" THEN YY(TURN,J)=4:GOTO 5700
- 5570 IF YY$(TURN,J)="F" THEN YY(TURN,J)=5:GOTO 5700
- 5580 IF YY$(TURN,J)="f" THEN YY(TURN,J)=5:GOTO 5700
- 5590 IF YY$(TURN,J)="G" THEN YY(TURN,J)=6:GOTO 5700
- 5600 IF YY$(TURN,J)="g" THEN YY(TURN,J)=6:GOTO 5700
- 5610 IF YY$(TURN,J)="H" THEN YY(TURN,J)=7:GOTO 5700
- 5620 IF YY$(TURN,J)="h" THEN YY(TURN,J)=7:GOTO 5700
- 5630 IF YY$(TURN,J)="I" THEN YY(TURN,J)=8:GOTO 5700
- 5640 IF YY$(TURN,J)="i" THEN YY(TURN,J)=8:GOTO 5700
- 5650 IF YY$(TURN,J)="J" THEN YY(TURN,J)=9:GOTO 5700
- 5660 IF YY$(TURN,J)="j" THEN YY(TURN,J)=9:GOTO 5700
- 5670 LOCATE 24,1
- 5680 LOCATE 24,1
- 5690 PRINT "ILLEGAL INPUT";:GOTO 5380
- 5700 XX(TURN,J)=VAL(RIGHT$(S$(TURN,J),1))
- 5710 X$=(RIGHT$(S$(TURN,J),1)):IF ASC(X$)<48 OR ASC(X$)>57 THEN LOCATE 24,1:PRINT "ILLEGAL INPUT";:GOTO 5380
- 5720 IF XX(TURN,J)<0 OR XX(TURN,J)>9 THEN LOCATE 24,1:PRINT "ILLEGAL INPUT ";:GOTO 5380
- 5730 REM THIS SECTION FOR CHECKING TO SEE IF A SHOT HAS BEEN USED
- 5740 FLIP=0
- 5750 FOR K=1 TO (TURN)
- 5760 FOR L=1 TO 3
- 5770 IF TURN=K AND L=J THEN GOTO 5790
- 5780 IF S$(TURN,J)=S$(K,L) THEN FLIP=1
- 5790 NEXT L
- 5800 NEXT K
- 5810 IF FLIP=1 THEN LOCATE 24,1: PRINT "YOU USED THAT ONE BEFORE - TRY AGAIN";:GOTO 5380
- 5820 FOR I=2000 TO 80 STEP -5:SOUND I,0.2:NEXT I:SOUND 300,2:SOUND 200,10
- 5830 A=((YY(TURN,J)*2)+3):B=((XX(TURN,J)*5)+4)
- 5840 LOCATE A,B
- 5850 PRINT TURN;
- 5860 NEXT J
- 5870 COLOR 0,7
- 5880 LOCATE 23,1:PRINT "NOW CALCULATING THE RESULTS OF YOUR SHOTS-SEE ABOVE";
- 5890 COLOR 7,0
- 5900 FOR J=1 TO 3
- 5910 FOR K=1 TO 22
- 5920 FLIP = 0
- 5930 IF XX(TURN,J)=X(K) AND YY(TURN,J)=Y(K) THEN FLIP=1
- 5940 IF FLIP=1 AND K<8 THEN HAC=HAC+1:DD=1
- 5950 IF FLIP=1 AND K<13 AND K>7 THEN HB=HB+1:DD=2
- 5960 IF FLIP=1 AND K<17 AND K>12 THEN HC=HC+1:DD=3
- 5970 IF FLIP=1 AND K>16 AND K<20 THEN HD=HD+1:DD=4
- 5980 IF FLIP=1 AND K>19 AND K<22 THEN HS=HS+1:DD=5
- 5990 IF FLIP=1 AND K>21 THEN HPT=HPT+1:DD=6
- 6000 ON FLIP GOSUB 6050
- 6010 NEXT K
- 6020 NEXT J
- 6030 RETURN
- 6040 REM SECTION FOR RECORDING YOUR HITS
- 6050 ON DD GOTO 6060,6150,6220,6280,6330,6370
- 6060 REM YOUR HIT THE AC
- 6070 ON HAC GOTO 6080,6090,6100,6110,6120,6130,6140
- 6080 LOCATE 4,56:PRINT TURN:RETURN
- 6090 LOCATE 4,61:PRINT TURN:RETURN
- 6100 LOCATE 4,66:PRINT TURN:RETURN
- 6110 LOCATE 4,71:PRINT TURN:RETURN
- 6120 LOCATE 4,76:PRINT TURN:RETURN
- 6130 LOCATE 2,56:PRINT TURN:RETURN
- 6140 LOCATE 6,56:PRINT TURN:RETURN
- 6150 REM YOU HIT THE BAT
- 6160 ON HB GOTO 6170,6180,6190,6200,6210
- 6170 LOCATE 10,56:PRINT TURN:RETURN
- 6180 LOCATE 10,61:PRINT TURN:RETURN
- 6190 LOCATE 10,66:PRINT TURN:RETURN
- 6200 LOCATE 10,71:PRINT TURN:RETURN
- 6210 LOCATE 10,76:PRINT TURN:RETURN
- 6220 REM YOU HIT THE CRU
- 6230 ON HC GOTO 6240,6250,6260,6270
- 6240 LOCATE 14,56:PRINT TURN:RETURN
- 6250 LOCATE 14,61:PRINT TURN:RETURN
- 6260 LOCATE 14,66:PRINT TURN:RETURN
- 6270 LOCATE 14,71:PRINT TURN:RETURN
- 6280 REM YOU HIT THE DES
- 6290 ON HD GOTO 6300,6310,6320
- 6300 LOCATE 18,56:PRINT TURN:RETURN
- 6310 LOCATE 18,61:PRINT TURN:RETURN
- 6320 LOCATE 18,66:PRINT TURN:RETURN
- 6330 REM YOU HIT THE SUB
- 6340 ON HS GOTO 6350,6360
- 6350 LOCATE 22,56:PRINT TURN:RETURN
- 6360 LOCATE 22,61:PRINT TURN:RETURN
- 6370 REM YOU HIT THE PT
- 6380 LOCATE 22,71:PRINT TURN
- 6390 RETURN
- 6400 PLAY "T150L8O3CFAO4L4CL8O3AO4L2C"
- 6410 RETURN
- 6420 PLAY "O3L4CCL2FL4CFL2AL4CFACFACFL2AL4FAO4L2CO3AFCL4CCL1F"
- 6430 RETURN
-